#include "widget.h"
#include "ui_widget.h"
#include <QStringList>
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QStringList list = {"C++", "Java", "Python"};
    ui->listWidget->addItems(list);
}

Widget::~Widget()
{
    delete ui;
}

//xxWidget 和 xxView 之间的区别
//以 QTableWidget 和 QTableView 为例
//QTableView 是基于 MVC 设计的控件. QTableView 自身不持有数据
//使用 QTableView 的时候需要用户创建一个 Model 对象 (比如 QStandardModel )
//并且把 Model 和 QTableView 关联起来. 后续修改 Model 中的数据就会影响 QTableView 的显示
//修改 QTableView 的显示也会影响到 Model 中的数据(双向绑定)
//QTableWidget 则是 QTableView 的子类, 对 Model 进行了封装. 不需要用户手动创建 Model 对象, 直接就可以往 QTableWidget 中添加数据了

void Widget::on_listWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
{
    if (current != nullptr && previous != nullptr) {
        qDebug() << "当前选中的: " << current->text();
        qDebug() << "之前选中的: " << previous->text();
    }
}

void Widget::on_pushButton_clicked()
{
    //获取到输入框的内容
    const QString text = ui->lineEdit->text();
    if (text.isEmpty()) {
        return;
    }
    ui->listWidget->addItem(text);
}

void Widget::on_pushButton_2_clicked()
{
    //获取当前被选中的元素
    int row = ui->listWidget->currentRow();
    //删除这一行
    ui->listWidget->takeItem(row);
}
